Time and work tracker for wireless devices

ABSTRACT

A time and work tracker that automatically collects and analyzes information about time and work performed on a wireless device is described herein. According to the present invention, a time and work tracking function is initiated on a wireless device. Thereafter, a user begins to perform work on the wireless device. As the user works, the tracking function on the wireless device collects data relating to the activities performed by the user. The collected data is then analyzed to determine what types of work the user has actually performed.

CROSS REFERENCE TO RELATED APPLICATIONS

This application claims priority from a co-pending continuation-in-partpatent application Ser. No. 09/740,412 which is a continuation-in-partof patent application Ser. No. 09/374,050 filed Aug. 13, 1999, which isa continuation-in-part of patent application Ser. No. 08/987,908 filedDec. 9, 1997, now U.S. Pat. No. 5,963,914 granted Oct. 5, 1999, which isa continuation-in-part of patent application Ser. No. 08/732,675 filedOct. 15,1996, now U.S. Pat. No. 5,696,702 granted Dec. 9, 1997, which isa continuation-in-part of now-abandoned U.S. patent application Ser. No.08/423,029, filed on Apr. 17, 1995, and all of which are incorporated byreference herein in their entirety.

COPYRIGHT STATEMENT

All of the material in this patent document is subject to copyrightprotection under the copyright laws of the United States and of othercountries. Portions of the material in this patent document are alsosubject to protection under the maskwork registration laws of the UnitedStates and of other countries. The owner of the copyright and maskworkrights has no objection to the facsimile reproduction by anyone of thepatent document or the patent disclosure, as it appears in the UnitedStates Patent and Trademark Office file or records, but otherwisereserves all copyright and maskwork rights whatsoever.

BACKGROUND OF INVENTION

1. Field of the Invention

The present invention relates generally to systems for recording timeexpended in performing tasks, and more particularly, to systems forautomatically recording time and predetermined activity performed on awireless device by monitoring file activity and the like.

2. Background of the Invention

Telecommuting refers to work being done at locations other than acentral location. Telecommuters are typically knowledge workers who workprimarily on tasks, which require mental or intellectual activity,rather than on tasks which require physical or capital intensive work ata central location. Many telecommuters use personal computers at theirremote work site. One of the biggest obstacles to implementation oftelecommuting is that managers would not be able to tell if theirtelecommuting employees were actually working. Another obstacle is theproblem of how to measure the productivity of telecommuting employees. Amanager needs to trust that a telecommuting employee is working andtrust is developed through quality communications between the centralsite and the remotely located telecommuting worker.

Several important business economic concerns are all positively affectedby telecommuting, including: maintaining or increasing productivity;decreasing office space needs; attracting or retaining critical skillsamong the staff; and compliance with air quality or other environmentalregulations.

Professional knowledge workers, such as computer programmers, bill theirtime for work done on their computers. The problem of how to monitortheir time and activities on their computer, as well as how toautomatically calculate the cost of these activities for accountingpurposes, needs to be solved. Many invoicing systems rely on the manualinputting of the billable time and a technique is required to determinethe accuracy of that billed time. In the custom software programmingbusiness, specifications often change so that more time is expended thanis originally projected and a customer needs to receive accuratedocumentation for additional time to be billed.

Therefore, there is a need that exists to selectively and automaticallymeasure the actual amount of work done on various projects on a computeror personal computing device by an operator, such as a telecommuter. Themeasurement of the actual amount of work done may be accomplished ateither a local site, at a site on a network where the user has a numberof input devices, or at a remote location. The invention disclosedherein, as well as in U.S. Pat. No. 6,185,514, which is herebyincorporated by reference in its entirety, serves to satisfy this need,as well as others.

Wireless Devices

The proliferation of wireless communications has further enhancedproductivity.

Wireless devices offer additional opportunities for tracking and/ormonitoring work, such as file activity and the like. There are four (4)general operating types of wireless devices currently available. Theseinclude: (1) Streaming audio/video devices, such as cellular phones; (2)Personal Data Assistants (PDAs), which are portable messaging anddatabase computing devices, such as the Palm™ Pilot, Blackberry™ andPocketPC™ devices, for instance; (3) General purpose computing devices,such as notebook computers configured with Bluetooth™ or other wirelessconnectivity, including WiFi and IEEE 802.11 connectivity, for instance;and Non-computing appliances, which are dedicated purpose computingdevices, such as smartrefrigerators, automobiles, or microwaves to namea few.

As with computing devices that are stand-alone or rely on a conventionalwired connection, many telecommuters now perform work activities onwireless devices. For the same reasons that it is desirable to measurethe actual amount of work performed on a stand-alone or wired computingdevice, it is desirable to measure similar activities on wirelessdevices. For instance, a work activity for a user might comprise acellular telephone call. It would be desirable to track and monitor thetime spent on the cellular phone call. Currently, however, there is nomanner in which to monitor the actual work activities performed on awireless device.

SUMMARY OF INVENTION

An object of the invention is to automatically collect and analyzeinformation about time expended and work performed on a wireless device.The term work is used broadly and includes, but is not necessarilylimited to, any meaningful activity the accounting of which may be ofsome significance. According to the present invention, a time and worktracking function is initiated on a wireless device. Thereafter, a userbegins to perform one or more activities on the wireless device. As theuser performs activities, the time and work tracking function collectsdata relating to the activities performed by the user, classifies theactivities, determines which activities constitute meaningful work, andrecords the amounts of time spent on each activity also taking intoaccount for idle periods where no activity occurs.

In one embodiment, the data collection occurs on the wireless device,for instance by generating a log file or storing data in a memorylocation regarding the activities performed and the time spent on eachactivity. Thereafter, a synchronization event occurs between thewireless device and a general purpose computing device, wherein thecollected data (e.g., the log file or memory area) is transferred to thegeneral purpose computer and the analysis of the data is performedthere, rather than on the wireless device itself. This is useful, forinstance when the wireless device is limited in its storage andprocessing capabilities. Alternatively, the collection and analysis ofthe data can occur wholly on the wireless device or wholly on theserver-side.

Wireless devices that may be used with the present invention include,for instance: streaming audio/video devices, such as cellular phones;PDAs; general purpose computing devices, such as notebook computersconfigured with Bluetooth™ or other wireless connectivity, includingWiFi and IEEE 802.11 connectivity, for instance; and non-computingappliances, such as smart refrigerators, automobiles, and microwaves.

The types of activities that are tracked on the wireless device include:e-mail activities such as sending or receiving an e-mail; sending andreceiving activities unrelated to e-mail; generic protocol I/Ooperations; radio activity; infrared activity; and streaming activity.Other types of activities that are tracked on the wireless deviceinclude: voice recognition activities, database accesses, customapplications, use of a Virtual Machine, such as Java™ or Microsoft™implementation, synchronization activities, uploads, downloads, setupand installation activities, and the use of conduits.

In one embodiment, a data collection function is instantiated in thememory of the wireless device. The function embeds itself as a hookbetween the operating system that controls the device and theapplication that the user interfaces with when performing theactivities. The function executes in the background while the user runsother programs, and as the user changes the internal state of theprograms (i.e., performs an activity), the function observes and recordsthe state changes as well as the times the changes took place. Ananalysis function is also instantiated is a hook embedded between theoperating system and the user applications and is configured todetermine which state changes in the application constitute work (basedupon user defined rules), who performed the work (based uponidentification criteria), and how long it took to perform the work(based upon an activity timer).

In one embodiment, the data collector classifies all activities aseither having a start, continue, or switch indication. As the dataanalyzer scans through the data collector, it starts a timer when astart event is reached. When there is a switch indication or a newactivity starts, A new timer is initiated for the new event. The timeris configured to have an idle timeout period wherein an idle period ispre-determined and if a user initiates a work activity and then remainsidle before starting a new activity, the timer stops when the idleperiod has passed. The activities that constitute work may be inputtedto the system via a user interface before (or after) the time and worktracking begins.

Further objects and advantages of the invention will be brought out inthe following portions of the specification, wherein the detaileddescription is for the purpose of fully disclosing preferred embodimentsof the invention without placing limitations thereon.

BRIEF DESCRIPTION OF DRAWINGS

The invention will be more fully understood by reference to thefollowing drawings, which are for illustrative purposes only:

FIG. 1 is a flowchart showing a time and work tracker for a wirelessdevice according to an embodiment of the present invention.

FIG. 2 is a flowchart showing a time and work tracker for a wirelessdevice according to another embodiment of the present invention.

FIG. 3 is a block diagram showing the components of a time and worktracker for a wireless device according to an embodiment of the presentinvention.

FIG. 4 is a flowchart showing a time and work tracker for a wirelessdevice including a synchronization event according to an embodiment ofthe present invention.

FIG. 5 is a block diagram showing the components of a time and worktracking architecture for a wireless device according to an embodimentof the present invention.

FIG. 6 is a block diagram showing the components of a time and worktracking architecture for a wireless device according to anotherembodiment of the present invention.

FIG. 7 is a block diagram showing the components of a time and worktracking architecture including hook functions according to anembodiment of the present invention.

FIG. 8 is a flowchart showing the use of an activity timer according toone embodiment of the present invention.

FIG. 9 is a flow chart illustrating the use of timers within an activitydata analyzer routine for a system according to an embodiment of thepresent invention.

FIG. 10 illustrates the use of active timers according to one embodimentof the present invention.

FIG. 11 is an illustrative timing diagram illustrating starting,restarting, and ending of an analyzer timer for a task, according to anembodiment of the present invention.

FIG. 12 is an illustrative timing diagram for two tasks illustrating theoperation of an analyzer timer.

FIG. 13 is an illustrative timing diagram for two tasks illustrating theoperation of an analyzer timer.

FIG. 14 is a flowchart showing the use of activity type indicators totime work events according to an embodiment of the present invention

DETAILED DESCRIPTION

The present invention relates to a time and work tracker for wirelessdevices. Referring more specifically to the drawings, for illustrativepurposes the present invention is embodied in the flowchart generallyshown in FIG. 1 where an embodiment of a time and work tracker for awireless device is shown.

Time and Work Tracker for a Wireless Device

Referring now to FIG. 1, a time and work tracking function is initiatedon a wireless device at block 100. At block 110, a user begins toperform an activity on the wireless device. As the user performsactivities, the tracking function on the wireless device collects datarelating to the activities performed by the user and when the activitiesoccurred at block 120. The collected data is then analyzed at block 130to determine what types of work the user has actually performed and howlong it took to perform the work. Optionally, the analysis section sendsthe data to a print module, which prints a report regarding the workperformed and the time spent. The activities that constitute work may beprovided as input to the system via a user interface prior to initiatingthe time and work tracking function.

Another embodiment of the present invention is shown in FIG. 2. At block200, a user provides rules to the system, for instance by accessing agraphical user interface (GUI). The rules specify what activitiesconstitute work, and what indications in the work specify a user. Forexample, one rule might tell the system that a cellular phone call froma specific number is owned by Jones and if the call is to anotherspecific number then that activity is to be defined as work.

Thereafter, a time and work tracking function is initiated on a wirelessdevice at block 210 wherein a data collector begins to observe theactivity on the wireless computing device. At block 220, a user beginsto perform an activity on the wireless device. As the user performsactivities, the tracking function on the wireless device collects datarelating to the activities performed by the user and when the activitiesoccurred at block 230. The collected data is then passed to a dataanalyzer at block 240. For each entry in the collected data, theanalyzer determines if this activity constitutes work at block 250. Ifnot, the next activity is obtained at block 260 and block 250 repeats.Otherwise, at block 270, the analyzer attributes the work to an ownerand determines the time spent on the activity.

At block 280, it is determined if there are any more activitiescollected from the data collector. If so, block 260 repeats. Otherwise,at block 290 a print module is invoked where a report is generated in anappropriate format (digital, on paper, etc) which shows who performedwhat work and how long it took.

FIG. 3 is a block diagram showing the components of an architectureconfigured to track work and time on a wireless device according to anembodiment of the present invention. Wireless device 300 obtains inputfrom a user 310. A time and work tracking function 315 executes onwireless device 300 and based on user input 310 records activity andtiming information 317 at data collection block 320. Data collectionblock 320 may comprise a log file or it may be a reserved memory blockon the wireless device. When user activity is complete or simultaneousto the user activity, data analysis block 330 receives information fromdata collection block 320. Based on pre-determined rules 335, the dataanalysis block determines what recorded activities constitute work andhow long each work activity took.

Synchronization Event

In one embodiment, a synchronization event occurs between the wirelessdevice and a general purpose computing device, wherein the collecteddata (e.g., the log file or memory area) is transferred to the generalpurpose computer and the analysis of the data is performed there. Thisis useful, for instance, when the wireless device is limited in itsstorage and processing capabilities. This embodiment of the presentinvention is shown in FIG. 4.

At block 400, a time and work tracking function is initiated on awireless. At block 410, a user begins to perform activities on thewireless device. As the user works, the tracking function on thewireless device collects data relating to the activities performed bythe user and the amount of time spent at block 420. At block 430, thecollected data is stored, for instance in a log file or otherappropriate memory location. At block 440, it is determined whether asynchronization event is occurring. If not, block 420 repeats andadditional information is stored by the data collector, if any. If asynchronization event is occurring at block 440, then at block 450, thecollected data is transferred to a general purpose computing device andat block 460, the data is analyzed to determine the actual workperformed, the time spent performing the work, and the person whoperformed the work.

Time and Work Tracking Architecture

FIG. 5 is a block diagram showing the components of an architectureconfigured to track work and time on a wireless device according to anembodiment of the present invention. Wireless device 500 obtains inputfrom a user 510. A time and work tracking function 520 executes onwireless device 500 and based on user input 510 records information aswell as the timing of the activities at data collection block 525.

When the user's work is complete, or at another appropriate time, asynchronization mechanism 530 interposed between the wireless device 500and a general purpose computer 540 is used to transfer information, forinstance the log file, from data collection block 525, acrosssynchronization mechanism, 530 and to a data analysis block 550 ongeneral purpose computer 540. The synchronization mechanism 530 may beany of those known to those skilled in the art, including the hot-synchcradle developed by Palm. Based on pre-defined rules 560, the analysisblock 550 uses the collected data to classify the activities as specifictypes of work and the amounts of time spent on each activity. Printingmodule 570 may optionally be used to transfer the analyzed data fromblock 550 to an external device 580, such as a printer.

FIG. 6 is a block diagram showing the components of an architectureconfigured to track work and time on a wireless device according toanother embodiment of the present invention. Wireless device 581 obtainsinput from a user 582. A time and work tracking function 583 executes ona server 584. The server 584 might be a general purpose computer orother device implemented by a service provider such as a phone company.The server 584 is coupled to the wireless device 581, for instance, bywireless link 599. Based on user input 582 the server 584 recordsinformation as well as the timing of the activities at data collectionblock 585, for instance a user might dial a telephone number, transmitdata (in the form of digital voice packets) and then hang up. All ofthese events are collected in block 585.

When the user's work is complete (e.g., upon hanging up), or at anotherappropriate time, a data analysis block 586 on the server 584 receivesthe collected data, for instance in the form of a log file. Based onpre-defined rules 587, the analysis block 586 uses the collected data toclassify the activities as specific types of work and the amounts oftime spent on each activity. Printing module 588 may optionally be usedto transfer the analyzed data from block 586 to an external device 589,such as a printer

Embodiments of Wireless Devices

Wireless devices used in various embodiments of the present inventioninclude, for instance: streaming audio/video devices, such as cellularphones; PDAs; general purpose computing devices, such as notebookcomputers configured with Bluetooth™ or other wireless connectivity,including WiFi and IEEE 802.11 connectivity, for instance; andNon-computing appliances, such as smart refrigerators, microwaves, andautomobiles, for instance. The general types of wireless devices arediscussed in more detail below.

Cellular phones are an example of a streaming audio/video wirelessdevice. A typical cellular phone is of a point-to-point nature, butcurrent cellular phones are evolving into broadcast tools. One keyfeature of this type of device is its ability to handle unlimitedstreaming media connections. Interactions include dialing numbers,receiving calls, receiving messages, message length metering, internetcommunications, and the storage of media streams (MP3 songs, forinstance). All of these interactions may be defined as rules thatinstruct the system according to the present invention that a workactivity is occurring.

The Palm™ Pilot, Blackberry™, and PocketPC™ devices are examples ofportable messaging and database wireless devices. Such devices representlimited capacity, limited connection computing devices. These devicesare typically used for e-mail, web surfing, calendaring, the use ofcontact lists, and the use of memo pads. Interactions with a userinclude access to internal databases (e.g., calendars, agendas,contacts, memos, and to-do lists), communications (e.g., wireless andinfrared), messaging (e.g., e-mail and direct connect), web browsing andspecial dedicated applications. All of these interactions may be definedas rules that instruct the system according to the present inventionthat a work activity is occurring.

A laptop computer is an example of a general purpose computing devicethat is portable. With the introduction of Bluetooth™ technology, whichallows random and casual LAN membership, such LAN membership can bemonitored and tracked. For instance, a user might bring the portablecomputer to a copy center and without configuring or plugging the laptopin, cause a printer at the copy center to print a file on the laptop.Such an activity, if it is determined that it constitutes work, can bemonitored by the present invention.

Non-computing appliances include, for instance, smart refrigerators,automobiles, and microwaves. Such appliances may be configured withBluetooth™, WiFi, or IEEE 802.11 connectivity, for instance. Whileend-users may not need to know how the devices are working, it may beessential for service records and/or maintenance (e.g., MTBFmonitoring).

Operating System Hook Functions

In one embodiment, the tracking function, which is configured to collectdata comprises an operating system hook that embeds itself between theoperating system and the user's applications. The hook executes in thebackground while the user runs other programs, and as the user changesthe internal state of the programs (i.e., performs an activity), thehook function observes and records the state changes.

An analysis function, which may be a part of the same or a differenthook function, is configured to determine which state changes in theapplication constitute work, by whom the work was performed, and howlong did it take. For instance, an email send operation to a specificserver from a specific e-mail address might constitute work, so theanalysis function determines when such work has occurred, who sent themessage, and how long the activity took. Optionally a print module maybe invoked to print a report regarding the work.

The analysis function also serves to record the amount of time taken foreach work activity, for instance by using a timer, which begins when theactivity starts and ends when a new activity starts. The timer may alsobe configured to have an idle timeout period wherein an idle period ispre determined and if a user initiates a work activity and then remainsidle before starting a new activity, the timer stops when the idleperiod has passed. In this manner, only actual time expended is tracked.

FIG. 7 is a block diagram showing the use of hook functions for datacollection and analysis according to an embodiment of the presentinvention. The system 700 comprises a wireless device 705 and a generalpurpose computer 710. Wireless device 705 includes a data collectionhook 715. General purpose computer 710 includes a data analysis hook720. An application program 725 on the wireless device (e.g., an e-mailclient or database) is configured to receive user input 730. As userinput is obtained, it is passed through data collection hook 715 andhandled by the operating system of the wireless device 735 andtransferred to a storage location 740, for instance a log file or memorylocation either on a hard disk or in random access memory (RAM).

A synchronization mechanism 750 is interposed between wireless device705 and general purpose computer 710. The synchronization mechanism 750is configured to transfer the collected data from storage location 740on the wireless device 705 to storage location 755 on the generalpurpose computer 710. Data analysis hook 720 is configured to receivethe collected data from storage location 755 and to analyze it based onpre-determined rules 760 that are given to hook 720 from a user prior tothe hooks being loaded into the respective memories of their devices.Pre-determined rules 760 are entered, for instance, by a user accessinga GUI and specifying to the GUI which activities are to be counted aswork.

Activity Timers

One or more embodiments of the present invention use activity timers toaccurately determine the amount of time it took to perform each workactivity. The timers are configured where each activity that constitutesmeaningful work is timed and when there is a lapse in activity during asingle activity, that lapse is not counted toward the total time. Thisprovides a more accurate determination of the time expended on a workactivity. FIG. 8 is a flowchart showing the operation of an activitytimer according to one embodiment of the present invention. At block800, a new activity is obtained. At block 810, the start time for theactivity is obtained. At block 820, it is determined if the timer hasgone to zero. If not, then the duration of this activity is the starttime to the end time. In this case, the time is recorded at block 830 asthe total time. Otherwise, the timer has been set to zero in which casethat means the idle timer had timed out. In that case, the total time isthe start time until the timeout period was reached, which is recordedas the total time at block 840. Thereafter, block 800 repeats for thenext activity after block 840 or 830.

FIG. 9 is a flow chart illustrating the use of timers within an activitydata analyzer routine 900 for a system according to the invention. Onceall data is collected, analysis can be done either locally or remotely.With regard to time and this system, each task is divided up and has astop watch. Unlike a typical stop watch, the button must continually bepressed to keep it going, otherwise it will stop. These are the activetimes used for this invention. All the stop watches are initialized tozero. A cumulative time file is used to store the amount of time alreadyspent. These files are updated to cumulatively track work. Block 902initializes the times to zero. Block 904 loads current cumulative timesfrom a cumulative time file 906.

Block 908 gets the next activity and determines which tasks belong tothat particular activity. Block 910 determines the owner of a particularactivity. The owner of the activity is determined based on pre-definedrules. For instance, in the case of a cellular phone, it may bepre-determined that all calls from a specific number are owned by Jones.

Block 912 checks if a job or activity is not to be counted. Not everyactivity that the system might do belongs to a particular task. Thereare activities that don't belong anywhere, for example, when Jones callsa specific number, which may be his residence, for instance. The act ofJones calling home need not be counted because in this scenario it doesnot constitute meaningful work. In this case, for example, this resultequals No_Job.

If the result is No_Job, Block 914 checks the active time. The stopwatches do not automatically shut off. The system has to periodicallylook to see if they have been running too long without any activity andshut them off if the result was not equal to Nojob. If the result wasequal to a particular job, then Block 916 accumulates the time for thatparticular job. This is analogous to actors who spin plates on top ofsticks. If there is some activity for the user Jones, the system givesthe Jones stick a little spin to keep the plate going. But if there isno continuing activity on Jones, eventually the plate will fall off thestick. Each activity is looked at to see who it belongs to and if itbelongs to a certain person, then that person's plate is given anotherspin.

FIG. 10 is a flow chart illustrating a routine 900 for checking activetimes in Block 914 in the analyzer routine of FIG. 9, which is the logicfor keeping the “plates spinning”. Block 1002 starts a timing loop foreach job. Block 1004 calculates the difference in time betweenactivities. Block 1006 tests if the allowable idle time is exceeded tostop that stop watch. If not, the routine loops back to Block 1002 foranother job. If the idle time is exceeded, Block 1008 accumulates thejob time. If it's time to stop that stop watch, then we accumulate thetotal time in Block 1010 and go back to do the next job. If it's nottime to stop the stop watch, we go on to the next task. All tasks arelooked at to determine if there's any activity. If any files areupdated, Block 1012 writes the data out to the file.

An event analyzer module reads the activity log file over a particularrange of days. Another module called a reports module provides anexternal interface to the system according to the invention. Data can beimported from other programs and project manager. Exports can be made todatabase project managers, etc. to provide printed reports, invoices andsummary information.

The event analyzer for the time tracking system is described in thefollowing pseudo code to function as follows:

1. For each job or task, there are four times:

a. total time (all time since last reset/billing)

b. current time (all time since last job start)

c. active time (time of last event)

d. idle time (timeout for end of job)

Total and Current time are relative (i.e. they represent totalhours/minutes/seconds). Active time is real-time and is used to comparewith event times to determine if a job has exceeded its idle time limit.Below are two pseudo-code routines for determining the time spent on agiven work activity

2. Analyzer Loop

Load all total times from file

Zero all current times

again:get next event

determine which job this event belongs to . . .

If it is NO_JOB then it is a ‘system’ event

which we can use to check active times

so we CheckActiveTimes( )

otherwise if

(old event time!=0)

currentTime[job]+=this event time−old event time

set activeTime[job]=this event time

CheckActiveTimes( ) for all other jobs to determine if idle

goto again

3. CheckActiveTimes( )

for(i=1 to # of jobs)

if this event time−old event time [i]>idle [i]

job is idle

if old event time[i] !=0

currentTime[i]=old event time+idle [i]

total time[i]+=currentTime[i]

if any totals updated then

Write totalTime file

Write a record to the job worked file

Write a record to the cumulative job file for this job

FIG. 11 is an illustrative timing diagram illustrating starting,restarting, and ending of an analyzer timer for a task, according to theinvention. An explanation of how a work computation data analyzeroperates is as follows: For each task a “re-triggerable one-shot”monostable timer is kept. This means that the timer can be reset fromits current position to the maximum position at any time. It onlyexpires if nothing has retriggered before the timeout value.

A waveform for such a timer is shown in FIG. 11:

At time a, the timer is started.

At time b, the first timer expires.

At time c, the timer is started.

At time d, the timer is re-started.

At time e, the timer expires.

FIGS. 12 and 13 are illustrative timing diagrams for two tasksillustrating operation of respective analyzer timers. If one imagineseach “start” as the detection of activity for a certain task then eachre-start is another detection of activity for that same task. Only whenthe timer “expires” does the work analyzer decide that work has beenperformed. That is when the time between the last event for this taskand the current event for this task is greater than the idle time.

In the work analyzer one of these “timers” is created for each task inthe user's database. When an activity is seen, the activity starts andrestarts the timer. At the end of the analyzed time all the timers areassumed to have expired. A waveform form is shown in FIGS. 12 and 13with a user working on two tasks:

At time f, start task 1.

At time g, end task 1.

At time h, start task 2.

At time i, end task 2.

At time j, start task 1 again.

At time k, restart task 1.

At time I, start task 2 again.

At time m, restart task 2.

At time n, end task 1.

At time o, end task 2.

And so forth.

Classification of Tracking Opportunities

In one embodiment of the present invention, as a user performsactivities on a wireless device, the data collector observes and recordsthe activities. Once recorded the activities need to be classified intocategories that constitute meaningful work. Depending on theapplication, meaningful work classifications can be wireless related,they might be internal and common to wireless devices, or they might bedesktop related. The tracking function that executes on the wirelessdevice is responsible for recognizing the occurrence of these activitiesand collecting the data associated with these activities, for instanceby generating a log file that records the activity and when it happened.

There are seven (7) general wireless operating modes related to theoperating types of wireless devices. These wireless operating modesinclude the following:

1. E-mail Send and Receive;

2. Non-Message Send and Receive;

3. Generic Protocol I/O, such as TCP/IP and Web browser;

4. Radio Activity;

5. Infrared Activity; and

6. Streaming Activity, such as a phone call;

7. Non-email message oriented traffic, such as personal text messaging.

There are four (4) general internal operating modes related to theoperating types of wireless devices. These internal operating modesinclude the following:

1. Voice recognition, such as phones;

2. Database Accesses;

3. Custom Applications; and

4. Virtual Machine operations, such as the Java™ virtual machine orother common language runtime (CLR) operations.

There are five (5) general desktop related operating modes related tothe operating types of wireless devices. These desktop related operatingmodes include the following:

1. Synchronization events;

2. Uploads;

3. Downloads;

4. Setup and Install operations; and

5. Conduit activities.

Activity Type Indicator

All of the above activities might define work for the purposes of a timeand work tracker depending upon what work needs to be tracked.Furthermore, each activity can be categorized as having either a startindication, a switch indication, or a continue indication. Startactivities include, for example, low level socket or URL connections,polling of a remote device, receiving a poll from a remote system,starting an application (i.e., in devices like PALM, RIM, etc.), andmaking a request to send a formatted package (i.e., e-mail, web page,etc.)

Switch activities include, for instance: communication to a differentdevice address or IP address, changing or shutting down an application(i.e., PALM, RIM, etc.), any equivalent to flash switchook used bytelephones (i.e., on a cell phone the send key may be used to switchconversations or conference in third parties, or a channel change (i.e.,for MP3 or video devices). Continue activities include data packet I/O(specifically where it can be determined which device the I/O is from/toby device ID or IP address) or streaming media transfer (in or out).

The activity type indicator associated with each entry maintained by thedata collector, instructs the data analyzer how to handle the activitytimers. Take, for example, the use of a cellular phone where certaincalls are defined to constitute meaningful work. After the time and worktracker is initiated on the cellular device, the user makes a call to aspecific phone number that has been pre-determined to constitutemeaningful work. The data collector records the activity of initiatingthe call and the number called and classifies the activity as a startactivity. As the call proceeds, the data collector records the transferof packets and calls these activities continue activities. Eventuallythe call ends, which either will be indicated by a new start activity inthe data collector or an idle timeout.

If during the call, the user received another call and answered it, suchan activity would be classified by the data collector as a switchindication. At that point, the analyzer would stop timing the initialconversation and start a new timer for the new work (if it ischaracterized as work also). Each time a continue activity is recognizedby the analyzer, the idle timer is reset to zero. In this manner, atimeout will occur if there is a lapse in a single work activity onlywhen there is no continue activity for longer than the idle timeoutperiod.

FIG. 14 is a flowchart showing the use of activity type indicators totime work according to an embodiment of the present invention. Initiallyan event occurs, which is recorded by the data collector that starts theoperation of a work activity timer. For instance at block 1400 anapplication starts, or at block 1401 an application switches, or atblock 1402 a low level I/O operation occurs on the network (i.e., asocket), or at block 1403 a remote device poll occurs 1404, or at block1405 a custom device I/O occurs.

Assuming that blocks 1400-1405 constitute meaningful work, they areconverted to a standard format at block 1410. At block 1420, it isdetermined if this is a start event. If so, then at block 1430 a newaccumulator is started. Otherwise, it is determined at block 1440 ifthis is a switch event. If so, it is determined at block 1450 if this isa new application. If so, a new accumulator is created at block 1460. Ifthis is not a new application at block 1450 or if this is not a switchevent at block 1440, the time difference is determined at block 1480 andthe current accumulator is updated at block 1490.

Wireless Operating Modes

To determine classification criteria, the wireless operating mode andits respective seven (7) tracking modes are described for the purpose ofexample. In the wireless operating mode, it is determined whetherinformation may be extracted and classified as either a start or acontinue indication.

E-Mail Send and Receive

Wireless devices often are capable of sending e-mail messages. Usinginternal software, each wireless device is capable of composing amessage that is sent to a server. The device also is capable ofreceiving messages that come from the server. Email uses a store andforward paradigm. As such, other wireless devices, such as non-computingappliances are also capable of sending e-mail without human interaction.For instance, a smart refrigerator might send messages to keep track ofits contents or a water meter might send messages to track daily usage.

E-mail consists of the following components: (1) a sender; (2) arecipient (3) a subject, (4) a body, and (5) optional attachments. Astart activity comprises the initiation of a send or receive. A continueactivity comprises sending each component, as well as transferring thebody in multiple segments and/or transferring the attachments in singleor multiple segments. Items which are tracked specifically ofgenerically in various embodiments of the present invention include, forinstance:

Specific E-Mail Addresses

E-mail addresses always consist of a user, an @ character, and the nameof the destination server. (e.g., someone@someserver.com)

Generic tracking is also performed using wildcards on either the user orserver name. (e.g., *@discovision.com or *@engr.sun*.com).

Specific IP Addresses

E-mail addresses also may use a specific IP address to identify aspecific source or destination. IP addresses take the form a.b.c.d.These items may also be tracked generically using wildcards (e.g.,201.55.103.*).

Data Format

In one embodiment, work is tracked based on the size of the data beingtransferred. For example, if pictures are being sent to a specificclient as a component of an individual's work, then it might be decidedthat a picture transfer constitutes work for that client.

Data Contents

It also is meaningful to track work based on the contents of the mail,even if it is only text. In one embodiment, a project or task ID isinserted into the mail contents.

The project or task ID is used to do fine grained tracking on the mail.

Non-Message Send and Receive

Many wireless devices send and receive custom message formats unrelatedto internet e-mail. These are related to normal operating actions or tospecific actions, such as synchronizing with a base station. In eachcase, some form of addressing is identified, (i.e., to whom the messageis being sent or from whom is the message being received), as well aspossibly evaluating the contents of the data. Similar to the start andcontinue actions for e-mail, non-message send and receive actionsinclude connecting, sending one or more message segments, and receivingone or more message segments.

Peer to Peer Communications

This involves short, small messages. The message contents can also beuseful for tracking data.

File Transfers

This involves transfer of a specific set of data of a known format(i.e., a picture, sound, clip, zip file, video, etc).

Data Format

Like with e-mail, if the format for the data is well known (i.e., JPEGimage or MP3 audio clip), this is used as its own criteria for trackingindependent of the sender or receiver.

Miscellaneous Communications

This is a category that defines such activities as synchronization andbackup. These operations are specific actions and may be tracked. Thistypically involves many different data formats and data contents formultiple clients.

Generic Protocol I/O (i.e., TCP/IP and Web Browser)

Regardless of how communication is performed (i.e., wireless, wired, orinfrared), if a specific protocol (e.g., TCP/IP, HTTP, FTP, etc) isused, tracking is done using the address states of the protocol.

Custom Applications

On most wireless devices, users are able to install their own customapplications that originally did not come with the device or werewritten by a third party. When protocol tracking is used, detection ofwhich application is using the protocol constitutes a tracking criteria.

Data Format

Like with e-mail, if a well-known data format is used (e.g., JPEG orMP3), the format is used as its own criteria for tracking independent ofthe sender or receiver.

Radio Activity

When radio is used for wireless activity, specific radio activities aretracked. Start and continue event detection is more complex, since radioconnections are intermittent and often fail. Often the radio activity iscompleted by a different cell than the one that started the activity.Here, application source can be used to combine with radioidentifications to track activity.

Start/Stop

Almost all wireless devices are polling even though they appear to push(i.e., information can be sent to them without the end-user asking).Therefore, each communication to a radio cell does not necessarilyconstitute a start of work. Therefore, each communication is tracked andconverted to a work start once data starts flowing.

Which Radio Cells are Involved

For location based activities (e.g., in the field repair people) it isuseful to know which radio cells are involved.

Data Format

Like with e-mail, if a well-known data format is used (e.g., JPEG orMP3), the format is used as its own criteria for tracking independent ofthe sender or receiver.

Streaming Activity

Start/Stop

In this scenario the user initiates all activity even in the case ofreceiving (they have to answer the call).

Data Format

Like with e-mail, if a well-known data format is used (e.g., JPEG orMP3), the format is used as its own criteria for tracking independent ofthe sender or receiver.

Participant ID(s) (i.e., Phone Numbers)

In any scenario where a phone number is available. Text messaging (i.e.,SMS) is treated the same as e-mail since that is actually the underlyingmechanism used.

Embodiment of a Wireless Data Collector

In one embodiment, a wireless data collector is implemented on a Palmhandheld device. The wireless data collector watches user activity forboth the changing state of the application and for wirelesscommunication activities. On the Palm devices, the data collectorapplications are implemented via a mechanism known as hacks. The hacksnecessary to implement an embodiment of the present invention are shownin the source code listed in Appendix A.

Although the description above contains many specificities, these shouldnot be construed as limiting the scope of the invention but as merelyproviding illustrations of some of the presently preferred embodimentsof this invention. Thus the scope of this invention should be determinedby the appended claims and their legal equivalents.

Program Listing Deposit

[Insert program here]

What is claimed is:
 1. A method for time and work tracking comprising: initiating a time and work tracking function on a wireless device; performing an activity using said wireless device; collecting one or more data items relating to said activity; and analyzing said data items comprising, obtaining one or more rules; and using said rules to determine which of said activities constitute a work activity.
 2. The method of claim 1, further comprising: transferring said data items from said wireless device to a general purpose computer.
 3. The method of claim 1 wherein said data Items are organized in a log file.
 4. The method of claim 1 wherein said wireless device comprises a streaming audio/video device, a portable messaging and database device, a general purpose computing device, or a non-computing appliance.
 5. The method of claim 4 wherein said streaming audio/video device comprises a cellular phone.
 6. The method of claim 4 wherein said portable messaging and database device comprises a Personal Data Assistant (PDA).
 7. The method of claim 4 wherein said general purpose computing device comprises a portable computer using a wireless protocol.
 8. The method of claim 4 wherein said non-computing appliance comprises a dedicated purpose computing device, such as a refrigerator, an automobile, or a microwave.
 9. The method of claim 1 wherein said data items are associated with a wireless related activity, an internal activity, or a desktop related activity.
 10. The method of claim 1 wherein said collecting further comprises categorizing said data items as a start activity, a switch activity, or a continue activity.
 11. The method of claim 1 wherein said data items are included in a memory location.
 12. The method of claim 1 further comprising collecting one or more timing items related to each of said data items.
 13. The method of claim 1 further comprising using said timing items to determine a precise amount of time expended on each of said work activities.
 14. A time and work tracking apparatus comprising: a time and work tracking function on a wireless device; an activity configured to be performed using said wireless device; one or more data items relating to said activity configured to be collected and analyzed; and one or more rules configured to be obtained, said rules configured to be used to determine which of said activities constitute a work activity.
 15. The apparatus of claim 14, further comprising a synchronization mechanism configured to transfer said data items from said wireless device to a general purpose computer.
 16. The apparatus of claim 14 wherein said data items are organized in a log file.
 17. The apparatus of claim 14 wherein said wireless device comprises a streaming audio/video device, a portable messaging and database device, a general purpose computing device, or a non-computing appliance.
 18. The apparatus of claim 17 wherein said streaming audio/video device comprises a cellular phone.
 19. The apparatus of claim 17 wherein said portable messaging and database device comprises a Personal Data Assistant (PDA).
 20. The apparatus of claim 17 wherein said general purpose computing device comprises a portable computer using a wireless protocol.
 21. The apparatus of claim 17 wherein said non-computing appliance comprises a dedicated purpose computing device, such as a refrigerator, an automobile, or a microwave.
 22. The apparatus of claim 14 wherein said data items are associated with a wireless related activity, an internal activity, or a desktop related activity.
 23. The apparatus of claim 14 further comprising a start activity, a switch activity, or a continue activity, wherein said data items are configured to be classified as either said start, said continue, or said switch activities.
 24. The apparatus of claim 14 wherein said data items are included in a memory location.
 25. The apparatus of claim 14 further comprising one or more timing items related to each of said data items configured to be collected.
 26. The apparatus of claim 14 wherein said timing items are configured to be used to determine a precise amount of time expended on each of said work activities.
 27. A computer program product comprising: a computer usable medium having computer readable program code embodied therein for tracking time and work on a wireless device comprising: computer readable program code configured to cause a computer to initiate a time and work tracking function on said wireless device; computer readable program code configured to cause a computer to perform an activity using said wireless device; computer readable program code configured to cause a computer to collect one or more data items relating to said activity; computer readable program code configured to cause a computer to analyze said data items; computer readable program code configured to cause a computer to obtain one or more rules; and computer readable program code configured to cause a computer to use said rules to determine which of said activities constitute a work activity.
 28. The computer program product of claim 27, further comprising computer readable program code configured to cause a computer to transfer said data items from said wireless device to a general purpose computer.
 29. The computer program product of claim 27 wherein said data items are organized in a log file.
 30. The computer program product of claim 27 wherein said wireless device comprises a streaming audio/video device, a portable messaging and database device, a general purpose computing device, or a non-computing appliance.
 31. The computer program product of claim 30 wherein said streaming audio/video device comprises a cellular phone.
 32. The computer program product of claim 30 wherein said portable messaging and database device comprises a Personal Data Assistant (PDA).
 33. The computer program product of claim 30 wherein said general purpose computing device comprises a portable computer using a wireless protocol.
 34. The computer program product of claim 30 wherein said non-computing appliance comprises a dedicated purpose computing device, such as a refrigerator, an automobile, or a microwave.
 35. The computer program product of claim 27 wherein said data items are associated with a wireless related activity, an internal activity, or a desktop related activity.
 36. The computer program product of claim 27 wherein said computer readable program code configured to cause a computer to collect further comprises computer readable program code configured to cause a computer to categorize said data hems as a start activity, a switch activity, or a continue activity.
 37. The computer program product of claim 27 wherein said data items are included in a memory location.
 38. The computer program product of claim 27 further comprising computer readable program code configured to cause a computer to collect one or more timing items related to each of said data items.
 39. The computer program product of claim 27 further comprising computer readable program code configured to cause a computer to use said timing items to determine a precise amount of time expended on each of said work activities.
 40. A system for tracking time and work on a wireless device comprising: means for monitoring a user's activity using said wireless device; means for recording said user's activity in a specified location; means for obtaining said user's activity from said specified location: means for using one or more rules to classify said user's activity as a work activity; wherein said means for obtaining uses a timing means to determine an amount of time expended on said work activity.
 41. The system of claim 40, further comprising means for transferring said user's activity from said specified location on said wireless device to another location on a general purpose computer.
 42. The system of claim 40 wherein said specified location comprises a log file.
 43. The system of claim 40 wherein said wireless device comprises a streaming audio/video device, a parable messaging and database device, a general purpose computing device, or a non-computing appliance.
 44. The system of claim 43 wherein said streaming audio/video device comprises a cellular phone.
 45. The system of claim 43 wherein said portable messaging and database device comprises a Personal Data Assistant (PDA).
 46. The system of claim 43 wherein said general purpose computing device comprises a portable computer using a wireless protocol.
 47. The system of claim 43 wherein said non-computing appliance comprises a dedicated purpose computing device, such as a refrigerator, an automobile, or a microwave.
 48. The system of claim 40 wherein said data items are associated with a wireless related activity, an internal activity, or a desktop related activity.
 49. The system of claim 40 further comprising means for defining said user's activity as a start activity, a switch activity, or a continue activity.
 50. The system of claim 40 wherein said specified location are included in a memory location.
 51. A method for tracking time and work on a wireless device comprising: initiating a time and work tracking function on said wireless device; performing an activity using said wireless device; collecting one or more data items relating to said activity; analyzing said data items on said wireless device, comprising obtaining one or more rules, and using said rules to determine which of said activities constitute a work activity; and printing said data items.
 52. The method of claim 51 wherein said wireless device comprises a streaming audio/video device, a portable messaging and database device, a general purpose computing device, or a non-computing appliance.
 53. The method of claim 52 wherein said streaming audio/video device comprises a cellular phone.
 54. The method of claim 52 wherein said portable messaging and database device comprises a Personal Data Assistant (PDA).
 55. The method of claim 52 wherein said general purpose computing device comprises a portable computer using a wireless protocol.
 56. The method of claim 52 wherein said non-computing appliance comprises a dedicated purpose computing device such as a refrigerator, an automobile, or a microwave.
 57. The method of claim 51 wherein said data items are associated with a wireless related activity, an internal activity, or a desktop related activity.
 58. The method of claim 51 wherein said collecting further comprises categorizing said data items as a start activity, a switch activity, or a continue activity.
 59. The method of claim 51 wherein said data items are included in a memory location.
 60. The method of claim 51 further comprising collecting one or more timing items related to each of said data items.
 61. The method of claim 51 further comprising using said timing items to determine a precise amount of time expended on each of said work activities. 